home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 2
/
Gold Medal Software Volume 2 (Gold Medal) (1994).iso
/
graphics
/
fexplore.arj
/
FRACTALS.DOC
< prev
Wrap
Text File
|
1993-08-25
|
4KB
|
79 lines
fractals.doc - Various musings about exploring fractals with fExplore
What the program does:
This program generates images of fractals. You can zoom into the
fractal to see new and different features, some similar, others distinct.
After calculated, the images are "animated" by quickly rotating colors,
leaving the structure alone but allowing the colors to move fluidly.
Since images take a while to generate, you may store them to disk and
play them later as a slide show.
What is a fractal:
The word fractal is used for many things. I use it to specifically
refer to images generated while testing for Mandlebroit set membership.
Others use it when refering to most anything associated with fractal
geometry, a new discipline of mathematics which attempts to model the
chaos of nature in a powerful way. To gain intution into the difference
between the geometry taught in high school (Euclidean) and newer Fractals
think of the difference between a perfect circle and an oak tree. Euclidean
geometry can describe a circle very well and easily, but an oak tree is too
complicated. Fractal geometry attempts to model the tree by quantifying
the similarity between its overall shape (the trunk and major branches),
with its details (an individual twig connecting to leaves).
About fractals:
Many people find images of fractals enchanting. They have a mathematical
and visual simplicity, stunningly detailed. Diving into different areas
of the Mandlebroit set reveals regions of spectacular beauty. Hidden
in the details are areas both similar and diverse from the starting image.
You can never be quite certain what you will see after a few zooms. This
gives fractal exploration its unique characteristic - it is always surprising
what you will find.
Hints for exploring:
Exploring consists of zooming into interesting regions of the fractal.
The most interesting regions are the boundaries between the members of
the mandlebroit set (depicted as black) and those areas not in the set
(depicted via colors). Pick any boundary area that interests you and zoom.
Structures with lots of detail are the best places to try.
How and why the program does what it does:
Mathematically speaking, images are generated by mapping a portion of
the complex plane to the screen and calculating how many iterations each
point takes before it is known not to be in the mandlebroit set. The
maximum number of iterations is 20,000. Some points very quickly diverge,
others never do. So how long it takes to calculate individual pixels varies
greatly. When generating the image it would be nice to calculate the easy
portions first, leaving the hard stuff for last. This way we will see more
of the image quickly.
The algorithm used by this program is somewhat simple. A list of points
to calculate next is maintained. Whenever a point diverges, its neighbors are
added to this list. If this list is empty (as it is on starting) a coarse
grid of points are added. This grid will be made smaller over time, but is
only used when the list is empty. There is also a special process where points
next to those diverged are placed on the list. This is necessary because the
list can be only so long. So some neighbors of diverged points can't
be properly added.
I found the algorithm complicated enough to warrant displaying salient
parts on the image. Basically points are colored like this:
black - points that diverged or haven't been calculated yet
color - rainbow from red to violet representing different iteration counts
white - points in list to be calculated next
So, watching the display, it starts out with white boxes enclosing colored
areas. When the white runs into points that don't diverge (take more than
20,000 iterations), those neighbors aren't added to the list and so the white
goes away and a jagged edge is left.
Outline of program:
initialize screen
map complex numbers onto screen
loop:
if list is empty
add points from a grid (decrease grid spacing if need be)
for all points in list
calculate iteration count
display as black if infinite, colored if diverged
if colored, add neighbors to list
goto loop